(function () {
    $.fn.extend({
        /**
         * 侧边栏的显示与隐藏
         */
        asideShow() {
            //更新前端数据
            RA.renderAside();
            RA.render();

            this.on('click', function () {
                RA.renderAside();
                RA.render();
                let right = $('aside').css('right') === '0px' ? -300 : 0;
                $(this).parents('aside').stop().animate({
                    right
                }, 300);
            });
        },

        /**
         * 返回顶部
         */
        backTop() {
            //侧边栏返回顶部的显示与隐藏
            function asideTopShow() {
                if ($(document).scrollTop() === 0) {
                    $('aside .backTop').hide();
                } else {
                    $('aside .backTop').show();
                }
            }

            asideTopShow();
            $(document).on('scroll', function () {
                asideTopShow();
            });

            $(this).on('click', function () {
                $('html,body').stop().animate({scrollTop: 0}, function () {
                    asideTopShow();
                });
            })
        },

        /**
         * 侧边栏的显示与隐藏
         */
        asideAllShow() {
            const self = this;

            function fun() {
                if (document.documentElement.clientWidth <= 1300) {
                    $(self).hide();
                } else {
                    $(self).show();
                }
            }

            fun();
            $(window).on('resize', fun);
        },

        /**
         * 购物车界面
         */
        goCart() {
            this.on('click', function () {
                //获取用户数据
                let userObj = JSON.parse(localStorage.getItem('userInfo') || '{}');
                //判断用户是否登录,如果未登录则跳转到登录界面
                if (!userObj.u_id) {//如果没登录就切换到登录
                    layer.msg('请您先登录');
                    setTimeout(function () {
                        location.href = 'login.html';
                    }, 1000);
                    return;
                }
                location.href = 'shopCar.html';
            })
        },

        /**
         * 侧边栏商品选中事件
         */
        selectGoods() {
            //获取用户数据
            let userObj = JSON.parse(localStorage.getItem('userInfo') || '{}');
            //判断用户是否登录,如果未登录则跳转到登录界面
            if (!userObj.u_id) {//如果没登录就切换到登录
                layer.msg('请您先登录');
                setTimeout(function () {
                    location.href = 'login.html';
                }, 1000);
                return;
            }

            const self = this;

            $(self).on('click', 'input[type="checkbox"]', function () {
                let mine = $(this);
                let selected = $(this).prop('checked');
                $.ajax({
                    url: './cart/selected',
                    type: 'post',
                    data: {
                        cDesc: selected ? '1' : '0',
                        cId: $(mine).parents('li').data('cid')
                    }
                }).then(function (res) {
                    if (res.status === 200) {
                        RA.renderAside();
                        RA.render();
                    }
                })
            });
            //全选事件
            $('#selectAll').on('click', function () {
                let selected = $(this).prop('checked');
                $.ajax({
                    url: './cart/selectAll',
                    type: 'post',
                    data: {
                        cDesc: selected ? '1' : '0',
                        uId: userObj.u_id
                    }
                }).then(function (res) {
                    if (res.status === 200) {
                        RA.renderAside();
                        RA.render();
                    }
                });
            });

            //删除商品事件
            $('.aside-goodsList').on('click', '.aside-delete', function () {
                let cId = $(this).parents('li').data('cid');
                layer.confirm('您确定要舍弃这个宝贝吗?', {
                    btn: ['残忍舍弃', '还是算了']
                }, function (index) {
                    $.ajax({
                        url: './cart/delete',
                        type: 'post',
                        data: {cId}
                    }).done(function (res) {
                        layer.msg(res.msg);
                        RA.render();
                        RA.renderAside();
                    })
                    layer.close(index);
                }, function () {

                })
            })
        },

        /**
         * 飞入购物车
         */
        flyToCar() {
            //点击加入购物车
            $('.btn-addCar').on('click', _.throttle(function () {
                //获取用户数据
                let userObj = JSON.parse(localStorage.getItem('userInfo') || '{}');
                //判断用户是否登录,如果未登录则跳转到登录界面
                if (!userObj.u_id) {//如果没登录就切换到登录
                    layer.msg('请您先登录');
                    setTimeout(function () {
                        location.href = 'login.html';
                    }, 1000);
                    return;
                }

                //创建飞行的图片
                let flyImgSrc = $('.ulImg li:eq(0) img').attr('src')
                let flyImg = $(`<img class="flyImg" src="${flyImgSrc}" alt="">`);

                //设置飞行图片的初始位置
                flyImg.css({
                    left: $('.btn-addCar').offset().left + $('.btn-addCar').outerWidth() / 2 - 25,
                    top: $('.btn-addCar').offset().top + $('.btn-addCar').outerHeight() / 2 - 25
                })

                flyImg.appendTo('body');
                //开始飞行
                flyImg.stop().animate({
                    width: 0,
                    height: 0,
                    left: $('aside .shopCar').offset().left + $('aside .shopCar').outerWidth() / 2,
                    top: $('aside .shopCar').offset().top + $('aside .shopCar').outerHeight() / 2
                }, 800, function () {
                    //获取基本数据对象
                    let goodInfo = $('.goods-detail');
                    let cartObj = {
                        cImg: $(goodInfo).find('li:eq(0) img').attr('src'),
                        cName: $(goodInfo).find('.goodsName h1').text(),
                        cPrice: $(goodInfo).find('.summary-price b').text(),
                        cNum: $(goodInfo).find('.addNum input').val(),
                        uId: userObj.u_id
                    }
                    //发送数据到服务器
                    $.ajax({
                        url: '/cart/add',
                        type: 'post',
                        data: cartObj
                    }).then(function (res) {
                        if (res.status === 200) {
                            layer.msg(res.msg);
                            flyImg.remove();
                            RA.renderAside();
                            RA.render();
                        }
                    });
                })
            }, 1200))
        }
    });
})()

$(function () {
    //侧边栏的显示与隐藏
    $('.shopCar').asideShow();
    $('.closeCar').asideShow();

    //返回顶部
    $('.backTop').backTop();

    //侧边栏的整体显示与隐藏
    $('aside').asideAllShow();

    //去购物车界面
    $('aside .goShopCar').goCart();

    //侧边栏商品选中事件
    $('.aside-goodsList').selectGoods();

    //飞入购物车
    $('.add-shopCar .btn-addCar').flyToCar();
})